package com.baitiaojun.common.enums.impl;

import cn.hutool.core.util.ArrayUtil;
import com.baitiaojun.common.enums.Enums;

import java.util.Arrays;

/**
 * 业务异常
 */
public enum ServiceExpEnums implements Enums {

    EXP_FILE_NOT_EXISTS(100000, "文件不存在"),
    EXP_FILE_NAME_INVALID(100001, "文件名无效"),
    EXP_DISABLE_TENANT(100002, "该租户无效"),
    EXP_EXPIRE_TENANT(100003, "该租户已过期"),
    EXP_DELETION_TENANT(100004, "缺失租户信息"),
    EXP_INSERT_LOGIN_LOG(100005, "登陆日志添加失败"),
    EXP_INSERT_OPER_LOG_MASTER(100006, "操作日志添加失败"),
    EXP_LOGIN_USER_NOT_EXISTS(100007, "登陆用户不存在"),
    EXP_LOGIN_USER_DELETED(100008, "对不起，您的账号已被删除"),
    EXP_LOGIN_USER_DISABLE(100009, "对不起，您的账号已停用"),
    EXP_LOGIN_USER_BAD_CREDENTIALS(100010, "登录失败，账号密码不正确"),
    EXP_BAD_CAPTCHA(100011, "验证码不能为空"),
    EXP_EXISTS_REGISTER_USER(100012, "注册失败，账号已存在"),
    EXP_BAD_REGISTER_USER(100013, "注册失败,请联系系统管理人员"),
    EXP_BAD_LOGIN_PASSWORD(100015, "登陆密码错误"),
    EXP_NOT_EXISTS_USER(100016, "该用户不存在"),
    EXP_BAD_DEFAULT_DB_CONFIG(100017, "默认数据库配置不存在"),
    EXP_BAD_INIT_TENANT(100018, "租户初始化错误"),
    EXP_EXISTS_TENANT(100019, "该租户已存在"),
    EXP_BAD_ROLE(100020, "角色不存在");

    private final Integer code;

    private final String name;

    ServiceExpEnums(Integer code, String name) {
        this.code = code;
        this.name = name;
    }

    @Override
    public Enums valueOf(Integer code) {
        return ArrayUtil.firstMatch(item -> item.getCode().equals(code), values());
    }

    @Override
    public int[] array() {
        return Arrays.stream(values()).mapToInt(ServiceExpEnums::getCode).toArray();
    }

    @Override
    public Integer getCode() {
        return code;
    }

    @Override
    public String getName() {
        return name;
    }
}
